<HTML><HEAD><TITLE>min_max(?Goal, ?C, +Lower, +Upper, +Percent, +Timeout)</TITLE>
</HEAD><BODY>[ <A HREF="index.html">library(fd)</A> | <A HREF="../../index.html">Reference Manual</A> | <A HREF="../../fullindex.html">Alphabetic Index</A> ]
<H1>min_max(?Goal, ?C, +Lower, +Upper, +Percent, +Timeout)</H1>
Find the solution of Goal that minimizes the maximum of elements of C,
within the bounds set by Lower,Upper and Percent in time not longer than
Timeout.


<DL>
<DT><EM>?Goal</EM></DT>
<DD>A callable term.
</DD>
<DT><EM>?C</EM></DT>
<DD>A linear term or a list of linear terms.
</DD>
<DT><EM>+Lower</EM></DT>
<DD>An integer.
</DD>
<DT><EM>+Upper</EM></DT>
<DD>An integer.
</DD>
<DT><EM>+Percent</EM></DT>
<DD>An integer.
</DD>
<DT><EM>+Timeout</EM></DT>
<DD>A number.
</DD>
</DL>
<H2>Description</H2>
   If C is a linear term, a solution of the goal Goal is found that
   minimizes the value of C. If C is a list of linear terms, the returned
   solution minimizes the maximum value of terms in the list.  The solution
   is found using the branch and bound method; as soon as a partial
   solution is found that is worse than a previous solution, the search is
   abandoned and a new solution is searched for.  The starting assumption
   is that the value to minimize is less than Upper and that any value less
   than Lower can be considered as a final solution.  Moreover, solutions
   whose minimized values are closer than Percent % are considered equal.
   Every time a new better solution is found, the event 280 is raised, its
   default handler prints the current cost.

<P>
   If Timeout is not zero, the predicate will stop after Timeout seconds
   and report the best solution it has found so far.  Calls with specified
   Timeout cannot be nested.

<P>
   This predicate is to be used for optimization problems when the whole
   search space is too large or when a suboptimal solution is sufficient.

<P>

<H3>Fail Conditions</H3>
   Fails if there is no solution to Goal.


<H3>Resatisfiable</H3>
   No.
<H2>See Also</H2>
<A HREF="../../lib/fd/min_max-2.html">min_max / 2</A>, <A HREF="../../lib/fd/min_max-4.html">min_max / 4</A>, <A HREF="../../lib/fd/min_max-5.html">min_max / 5</A>, <A HREF="../../lib/fd/min_max-8.html">min_max / 8</A>, <A HREF="../../lib/fd/minimize-2.html">minimize / 2</A>, <A HREF="../../lib/fd/minimize-4.html">minimize / 4</A>, <A HREF="../../lib/fd/minimize-5.html">minimize / 5</A>, <A HREF="../../lib/fd/minimize-6.html">minimize / 6</A>, <A HREF="../../lib/fd/minimize-8.html">minimize / 8</A>
</BODY></HTML>
